home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 05 - 1989 / 05.08 Aug 89 / POOPDraw Code ƒ / CLSS POOPObject.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-06-12  |  4.0 KB  |  156 lines  |  [TEXT/KAHL]

  1. /********************************************************************/
  2. /*                        SOURCE CODE FILE                            */
  3. /********************************************************************/
  4. /*
  5. *   >>>    File name:        CLASS POOP Object.c    
  6. *
  7. *      >>>    Purpose:        Methods for Generic Objects
  8. *     >>>    Project:        PoopDraw    Version 1        
  9. *     >>>    Date:            May 23, 1989
  10. *      >>>    By:                Adam Treister
  11. *
  12. */
  13. /********************************************************************/
  14. /*    For Your Information            1802 Hillside Rd. SB CA 93101    */
  15. /********************************************************************/
  16.  
  17. #include "PoopDrawInc"
  18.  
  19. private void Init(ObjectHandle ObjectH,LPtr ParmP);
  20. private void Dispose(ObjectHandle ObjectH);
  21.  
  22. private void Show(ObjectHandle ObjectH);
  23. private void Hide(ObjectHandle ObjectH);
  24.  
  25. private void Resize(ObjectHandle ObjectH,LPtr ParmP);
  26. private void Move(ObjectHandle ObjectH,LPtr ParmP);
  27. private void BringToFront(ObjectHandle ObjectH,ObjectHandle obList);
  28. private void SendToBack(ObjectHandle ObjectH,ObjectHandle obList);
  29.  
  30. /***** Dispatch *****************************************************/
  31.  
  32. void ObjectDispatch(ObjectH,Message,ParmP)
  33. ObjectHandle ObjectH;
  34. int Message;
  35. LPtr ParmP;
  36.  
  37. {
  38.     switch(Message)
  39.     {
  40.     
  41.         case INIT:            Init(ObjectH,ParmP);        break;
  42.         case DISPOSE:        Dispose(ObjectH);                break;
  43.  
  44.         case SHOW:            Show(ObjectH);                break;
  45.          case HIDE:            Hide(ObjectH);                break;
  46.  
  47.         case MOVE:            Move(ObjectH,ParmP);        break;
  48.          case RESIZE:        Resize(ObjectH,ParmP);        break;
  49.  
  50.         case CUT:            
  51.         case COPY:            
  52.         case PASTE:            /* sorry, not implemented */            break;
  53.  
  54.         case FRAME:            FrameRect(&(*ObjectH)->bounds);            break;
  55.         case INVAL:            InvalRect(&(*ObjectH)->bounds);        break;        
  56.         case ERASE:            EraseRect(&(*ObjectH)->bounds);            break;
  57.  
  58.         case BRINGTOFRONT:        BringToFront(ObjectH,ParmP);    break;        
  59.         case SENDTOBACK:        SendToBack(ObjectH,ParmP);        break;
  60.  
  61.  
  62.          default:            Oops("\pThe Buck Stops here!",Message,TRUE);
  63.     }
  64. }    
  65. /*---------------------------------------------------------------*/
  66. ObjectHandle MakeStdObject(void);
  67. ObjectHandle MakeStdObject()
  68. {
  69.     ObjectHandle ObjectH;
  70.     
  71.     ObjectH = _GetHandleToRecord(ObjectRec);
  72.     (*ObjectH)->dispatch = ObjectDispatch;
  73.     return(ObjectH);
  74. }
  75.  
  76. /*------------------------------------------------------------------*/
  77. void Init(ObjectH,ParmP)
  78. register ObjectHandle ObjectH;
  79. LPtr ParmP;
  80.  
  81. {
  82.     
  83.     (*ObjectH)->bounds = *((Rect *) ParmP);
  84.     BitSet(&(*ObjectH)->attributes,VisibleBit);
  85.     (*ObjectH)->port = MyFrontWindow();
  86. }
  87. /*---------------------------------------------------------------*/
  88. void Dispose(ObjectH)
  89. register ObjectHandle ObjectH;
  90.  
  91. {
  92.     DisposeHandle(ObjectH);
  93. }
  94.  
  95.  
  96. /*---------------------------------------------------------------*/
  97. void Show(ObjectH)
  98. register ObjectHandle ObjectH;
  99.  
  100. {
  101.     BitSet(&(*ObjectH)->attributes,VisibleBit);
  102.     Dispatch(ObjectH,INVAL,NULL);
  103. }
  104.  
  105. /*---------------------------------------------------------------*/
  106. void Hide(ObjectH)
  107. register ObjectHandle ObjectH;
  108.  
  109. {
  110.     BitClr(&(*ObjectH)->attributes,VisibleBit);
  111.     Dispatch(ObjectH,INVAL,NULL);
  112. }
  113. /*==================================================================*/
  114. void Move(ObjectH,ParmP)
  115. register ObjectHandle ObjectH;
  116. LPtr ParmP;
  117.  
  118. {
  119.     int dh,dv;
  120.     
  121.     if (*ParmP == 0x8000) return;
  122.     dv = HiWord(*ParmP);    dh =  LoWord(*ParmP);    
  123.     Dispatch(ObjectH,INVAL,NULL);
  124.     OffsetRect(&(*ObjectH)->bounds,dh,dv);
  125.     Dispatch(ObjectH,INVAL,NULL);
  126. }
  127.  
  128. /*---------------------------------------------------------------*/
  129. void Resize(ObjectH,ParmP)
  130. register ObjectHandle ObjectH;
  131. LPtr ParmP;
  132. {
  133.     Dispatch(ObjectH,INVAL,NULL);
  134.     (*ObjectH)->bounds = *(Rect *) ParmP;
  135.     Dispatch(ObjectH,INVAL,NULL);
  136.  
  137. }
  138. /*------------------------------------------------------------------*/
  139. void BringToFront(ObjectH,obList)
  140. register ObjectHandle ObjectH;
  141. register ObjectHandle obList;
  142. {
  143.     Dispatch(obList,DELOBJECT,ObjectH);
  144.     Dispatch(obList,ADDOBJECT,ObjectH);
  145.     Dispatch(ObjectH,INVAL,NULL);
  146. }
  147. /*------------------------------------------------------------------*/
  148. void SendToBack(ObjectH,obList)
  149. register ObjectHandle ObjectH;
  150. register ObjectHandle obList;
  151. {
  152.     Dispatch(obList,DELOBJECT,ObjectH);
  153.     Dispatch(obList,APPEND,ObjectH);
  154.     Dispatch(ObjectH,INVAL,NULL);
  155. }
  156.